home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 22 / PC Actual CD 22.iso / SHARE / prog / POVRAY / MENGER.ZIP / menger / menger.inc < prev    next >
Encoding:
Text File  |  1997-08-20  |  1.7 KB  |  65 lines

  1. #ifndef (MENGER_DEPTH)
  2.    #declare MENGER_DEPTH = 2
  3. #end
  4.  
  5. #ifndef (MENGER_SHAPE)
  6.    #declare MENGER_SHAPE =
  7.    box {
  8.       <-0.5, -0.5, -0.5>, <0.5, 0.5, 0.5>
  9.    }
  10. #end
  11.  
  12. #ifndef (MENGER_SUBSHAPE)
  13.    #declare MENGER_SUBSHAPE =
  14.    box {
  15.       <-0.55, -0.5, -0.5>, <0.55, 0.5, 0.5>
  16.    }
  17. #end
  18.  
  19.  
  20.  
  21. #declare MENGER_TMPDEPTH = MENGER_DEPTH
  22.  
  23. #declare MENGER_OBJECT =
  24. difference {
  25.    object { MENGER_SHAPE }
  26.  
  27.    #declare MENGER_PARTS = 0
  28.    #while (MENGER_TMPDEPTH>=0)
  29.       #declare MENGER_ROWS = pow(3,MENGER_TMPDEPTH)
  30.       #declare MENGER_COLS = MENGER_ROWS
  31.       #declare MENGER_SCALE = pow(3,-(MENGER_TMPDEPTH+1))
  32.       #declare MENGER_SCALE2 = pow(3,-(MENGER_TMPDEPTH))
  33.       #declare MENGER_SUB =
  34.       object { MENGER_SUBSHAPE scale <1, MENGER_SCALE, MENGER_SCALE> }
  35.  
  36.       #while (MENGER_ROWS>0)
  37.          #declare MENGER_COLS = pow(3,MENGER_TMPDEPTH)
  38.          #while (MENGER_COLS>0)
  39.             object {
  40.                MENGER_SUB
  41.                rotate <0, 90, 0>
  42.                translate <(MENGER_COLS-0.5)*MENGER_SCALE2-0.5, (MENGER_ROWS-0.5)*MENGER_SCALE2-0.5, 0>
  43.             }
  44.             object {
  45.                MENGER_SUB
  46.                rotate <0, 90, 0>
  47.                translate <(MENGER_COLS-0.5)*MENGER_SCALE2-0.5, (MENGER_ROWS-0.5)*MENGER_SCALE2-0.5, 0>
  48.                rotate <0, 90, 0>
  49.             }
  50.             object {
  51.                MENGER_SUB
  52.                rotate <0, 90, 0>
  53.                translate <(MENGER_COLS-0.5)*MENGER_SCALE2-0.5, (MENGER_ROWS-0.5)*MENGER_SCALE2-0.5, 0>
  54.                rotate <90, 0, 0>
  55.             }
  56.             #declare MENGER_COLS = MENGER_COLS-1
  57.          #end
  58.          #declare MENGER_ROWS = MENGER_ROWS-1
  59.       #declare MENGER_PARTS = MENGER_PARTS+3
  60.       #end
  61.  
  62.       #declare MENGER_TMPDEPTH = MENGER_TMPDEPTH-1
  63.    #end
  64. }
  65.